import request from '@/config/axios'

export interface Property {
  propertyId?: number | string // 属性编号
  propertyName?: string // 属性名称
  valueId?: number | string // 属性值编号
  valueName?: string // 属性值名称
}

export interface Sku {
  id?: number | string // 产品 SKU 编号
  shopId: undefined // 店铺编号
  name?: string // 产品 SKU 名称
  spuId?: number | string // SPU 编号
  properties?: Property[] // 属性数组
  price?: number | string // 销售价
  costPrice?: number | string // 成本价
  marketPrice?: number | string // 市场价
  wholesalePrice?: number | string // 批发价
  vipPrice?: number | string //会员价
  barCode?: string // 产品条码
  picUrl?: string // 图片地址
  stock?: number // 库存
  weight?: number // 产品重量，单位：kg 千克
  volume?: number // 产品体积，单位：m^3 平米
  firstBrokeragePrice?: number | string // 一级分销的佣金
  secondBrokeragePrice?: number | string // 二级分销的佣金
  salesCount?: number // 产品销量
}

export interface GiveCouponTemplate {
  id?: number | string
  name?: string // 优惠券名称
}

export interface Spu {
  id?: number | string
  shopId?: number | string // 店铺编号
  name?: string // 产品名称
  type?: string // 主营类目
  platformCategoryId?: number | string // 行业类目
  categoryId?: number | string // 产品分类
  keyword?: string // 关键字
  unitName?: string // 计价单位
  stepQuantity?: number // 计价数值，即每次加购数量
  limitMinQuantity?: number // 起购数量
  limitMaxQuantity?: number // 限购数量
  picUrl?: string // 产品封面图
  sliderPicUrls?: string[] // 产品轮播图
  introduction?: string // 产品简介
  deliveryTypes?: number[] // 配送方式
  deliveryTemplateId?: number | string | undefined // 运费模版
  brandId?: number | string // 产品品牌编号
  specType?: boolean // 产品规格
  skus?: Sku[] // sku数组
  description?: string // 产品详情
  isIntegral?: boolean // 是否积分产品
  giveIntegral?: number // 赠送积分
  isBrokerage?: boolean // 是否分佣产品
  isSticky?: boolean // 是否置顶
  recommend?: number // 推荐类型
  sort?: number // 产品排序
  virtualSalesCount?: number // 虚拟销量
  priceMode?: number // 计价模式
  price?: number // 销售价
  costPrice?: number // 成本价
  marketPrice?: number // 市场价
  wholesalePrice?: number // 批发价
  vipPrice?: number // 会员价
  combinationPrice?: number // 产品拼团价格
  seckillPrice?: number // 产品秒杀价格
  salesCount?: number // 产品销量
  stock?: number // 产品库存
  createTime?: Date // 产品创建时间
  status?: number // 产品状态
  labels?: string[] // 标签
  dishAttribute?: number // 菜肴属性
}

// 获得 Spu 列表
export const getSpuPage = (params: PageParam) => {
  return request.get({ url: '/product/spu/page', params })
}

// 获得 Spu 列表 tabsCount
export const getTabsCount = (type: string = '') => {
  return request.get({ url: '/product/spu/tab-count?type=' + type })
}

// 创建产品 Spu
export const createSpu = (data: Spu) => {
  return request.post({ url: '/product/spu/create', data })
}

// 更新产品 Spu
export const updateSpu = (data: Spu) => {
  return request.put({ url: '/product/spu/update', data })
}

// 更新产品 Spu 状态
export const updateStatus = (data: { id: number | string; status: number }) => {
  return request.put({ url: '/product/spu/update-status', data })
}

// 更新产品 Spu 置顶
export const updateSticky = (data: { id: number | string; isSticky: boolean }) => {
  return request.put({ url: '/product/spu/update-sticky', data })
}

// 更新产品 Spu 推荐类型及排序
export const updateRecommendSort = (data: {
  id: number | string
  recommend: number
  sort: number
}) => {
  return request.put({ url: '/product/spu/update-recommend-sort', data })
}

// 获得产品 Spu
export const getSpu = (id: number | string) => {
  return request.get({ url: `/product/spu/get-detail?id=${id}` })
}

// 获得产品 Spu 详情列表
export const getSpuDetailList = (ids: any[]) => {
  return request.get({ url: `/product/spu/list?spuIds=${ids}` })
}

// 删除产品 Spu
export const deleteSpu = (id: number | string) => {
  return request.delete({ url: `/product/spu/delete?id=${id}` })
}

// 导出产品 Spu Excel
export const exportSpu = async (params: any) => {
  return await request.download({ url: '/product/spu/export', params })
}

// 获得产品 SPU 精简列表
export const getSpuSimpleList = async () => {
  return request.get({ url: '/product/spu/list-all-simple' })
}
